#include<iostream>
#include"matriz.h"
#include"archivobitmap.h"
#include"archivoRegistros.h"

class etapa_prueva{
public:

/*funcion donde se ingresa un direcion de archivo de letra y calcula las
 cuentas referentes a esa letra adamas de guardar la letra como vector
  en archivo binario ABCD*/


void crear_una_ves(std::string ruta)
{
     ArchivoBitmap * bitmap = new ArchivoBitmap(ruta);
      int valor;
    valor=bitmap->getAncho()*bitmap->getAlto();
     Matriz letra(valor,1);
     /*letra es la matriz con loa datos del archivo bmp*/
     Matriz transpuesta(1,valor);
     Matriz producto(valor,valor);
     int matris[2500][1];

      ArchivoRegistros archivo("ABCD.dat",sizeof(matris));
     int k=0;

     for (int i = 0; i < bitmap->getAncho(); i++)
         {
              for (int j = 0; j < bitmap->getAlto(); j++)
                  {
                  matris[k][0]=bitmap->obtenerColor(i,j);
                  letra.llenar(k,0,bitmap->obtenerColor(i,j));
                  transpuesta.llenar(0,k,bitmap->obtenerColor(i,j));
                  k++;
                  }
        std::cout << std::endl;

        }


     int contador=0;
     while(!archivo.fin()){
             contador++;
             archivo.posicionarse(contador);

     }
     archivo.escribir(&matris);
     producto=letra*transpuesta;
     producto.restar_identidad();



 delete bitmap;


}

void crear_total(){
     int paso=1;

     while(paso<27)
     {
           switch(paso)
           {
                  case 1: crear_una_ves("A.bmp");
                           break;
                  case 2: crear_una_ves("B.bmp");
                            break;
                  case 3: crear_una_ves("C.bmp");
                            break;
                  case 4: crear_una_ves("D.bmp");
                            break;
                  case 5: crear_una_ves("E.bmp");
                            break;
                  case 6: crear_una_ves("F.bmp");
                            break;
                  case 7: crear_una_ves("G.bmp");
                            break;
                  case 8: crear_una_ves("H.bmp");
                            break;
                  case 9: crear_una_ves("I.bmp");
                            break;
                  case 10: crear_una_ves("J.bmp");
                            break;
                  case 11: crear_una_ves("K.bmp");
                            break;
                  case 12: crear_una_ves("L.bmp");
                            break;
                  case 13: crear_una_ves("M.bmp");
                            break;
                  case 14: crear_una_ves("N.bmp");
                            break;
                  case 15: crear_una_ves("O.bmp");
                            break;
                  case 16: crear_una_ves("P.bmp");
                            break;
                  case 17: crear_una_ves("Q.bmp");
                            break;
                  case 18: crear_una_ves("R.bmp");
                            break;
                  case 19: crear_una_ves("S.bmp");
                            break;
                  case 20: crear_una_ves("T.bmp");
                            break;
                  case 21: crear_una_ves("U.bmp");
                            break;
                  case 22: crear_una_ves("V.bmp");
                             break;
                  case 23: crear_una_ves("W.bmp");
                             break;
                  case 24: crear_una_ves("X.bmp");
                             break;
                  case 25: crear_una_ves("Y.bmp");
                             break;
                  case 26: crear_una_ves("Z.bmp");

               }
              paso++;
           }

}



void matris_demayor_peso(){
     Matriz A(2500,1);
     Matriz B(1,2500);
     Matriz C(2500,2500);
     Matriz D(2500,2500);
     int matris[2500][1];
     ArchivoRegistros archivo("ABCD.dat",sizeof(matris));

 int contador=0;
 while(!archivo.fin()){

              archivo.leer(&matris);

              for(int s=0;s<2500;s++)
              {
                 int h=matris[s][0];
                 A.llenar(s,0,h);
                 B.llenar(0,s,h);
                 }

     C=A*B;
     C.restar_identidad();
     if(contador<1)D=C;
     else
     {Matriz E(C);
     D=D+E;
     }
     ArchivoRegistros mayor_peso("MAYOR.dat",sizeof(int));
     for(int i=0;i<2500;i++)
       for(int j=0;j<2500;j++)
       {
               int m=D.mostrar(i,j);
               mayor_peso.escribir(&m);
               }
    contador++;
}
}









};

int main(){

    etapa_prueva  prueva;
    prueva.crear_total();
    prueva.matris_demayor_peso();
    cin.get();


    return 0;
}
